/**
 *
 * @author Andreina
 */

package uast.bpdex;
import uast.bpdex.BaseDatos.*;
import java.io.*;
import java.util.LinkedList;

public class Usuario {
    private String nombre;
    private String clave;
    private String pregunta;
    private String respuesta;
    private int privilegio;

  //Constructor vacío de la clase
    public Usuario () {
        this.nombre = "";
        this.clave = "";
        this.pregunta = "";
        this.respuesta = "";
        this.privilegio = 0;
    }

    //Constructor de la clase que recibe todos los parámetros bajo los que debe ser creado un usuario
    public Usuario (String nombre, String clave, String pregunta, String respuesta, int privilegio) {
        this.nombre = nombre;
        this.clave = clave;
        this.pregunta = pregunta;
        this.respuesta = respuesta;
        this.privilegio = privilegio;
    }

    /* Método para ubicar a un usuario en la base de datos utilizando su nombre de usuario
     * Parámetros: String username -> nombre del usuario que se desea ubicar
     * Salida: Usuario encontrado en la base de datos, null si no se encontró ninguno
     */
    public static Usuario buscar(String username) throws Exception{
      DataBase db = new DataBase();
      Usuario u = db.buscarUsr(username);
      return u;
    }
    
    /* Metodo que elimina de la base de datos la instancia de usuario
     * 
     */
    public void eliminarUsuario(String tipo) throws Exception{
      DataBase db = new DataBase();
      db.eliminarCuenta(this, tipo);
      return;
    }
    public String obtenerPregunta(String id) {
        String preg = "";
        try {
            DataBase db = new DataBase();
            preg = db.obtenerPreguntaSecreta(id);
        } catch (Exception e) {
        }
        return preg;
    }

    public boolean validarRespuesta() {
        boolean bien = false;
        try {
            DataBase db = new DataBase();
            String resp = db.obtenerRespuestaSecreta(this.nombre);
            bien = (resp.equals(this.respuesta));
        } catch (Exception e) {
        }
        return bien;
    }

    public String obtenerClave() {
        String clav = "";
        try {
            DataBase db = new DataBase();
            clav = db.obtenerContrasena(this.nombre);
        } catch (Exception e) {
        }
        return clav;
    }

    // Lista de getter y setter de la clase
    public void setClave(String clave) {
        this.clave = clave;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setPregunta(String pregunta) {
        this.pregunta = pregunta;
    }

    public void setPrivilegio(int privilegio) {
        this.privilegio = privilegio;
    }

    public void setRespuesta(String respuesta) {
        this.respuesta = respuesta;
    }

    public String getClave() {
        return clave;
    }

    public String getNombre() {
        return nombre;
    }

    public String getPregunta() {
        return pregunta;
    }

    public int getPrivilegio() {
        return privilegio;
    }

    public String getRespuesta() {
        return respuesta;
    }

}
